# coding=utf-8

# 布尔值

# 下面的输入全部返回False。
print(bool(None))
print(bool(()))
print(bool([]))
print(bool({}))
print(bool(""))
print(bool(0))

# 虽然这些值在条件运算中会当做False，但是本身不等于False。
print(True and "")
print(not "")
print(False == "")
print(False == 0) # 0除外，bool类型的内部表示就是int类型。

# bool运算
print(0 < 1 < 10)
print(0 < 1 and 1 < 10)
print(not(0 > 1 > 10))
print(not(0 > 1 or 1 > 10))

# 语句块
if(10 > 1):
	print("10 > 1")
else:
	print("不可能发生")

print("10 > 1" if 10 > 1 else "不可能发生")

# == 和 is的差别，==比较的是内容，is比较的是引用。
x = [1, 2, 3]
y = x
z = [1, 2, 3]
print(x == y)
print(x == z)
print(x is y)
print(x is z)

# 循环语句
x = 1
while(x <= 10):
	print(x)
	x += 1

# for循环类似C# 的foreach，注意for后面是没有括号的，python真是能简洁就尽量简洁。
for x in range(1, 10):
	print(x)

for key in {"x":"xxx"}:
	print(key)

for key, value in {"x":"xxx"}.items():
	print(key, value)

for x, y, z in [["a", 1, "A"],["b", 2, "B"]]:
	print(x, y, z)

# 带索引的遍历
for index, value in enumerate(range(0, 10)):
	print(index, value)

# 好用的zip方法
for x, y in zip(range(1, 10), range(1, 10)):
	print(x, y)

# 循环中的的else子句
from math import sqrt
for item in range(99, 1, -1):
	root = sqrt(item)
	if(root == int(root)):
		print(item)
		break
else:
	print("没有执行break语句。")

# pass、exec、eval
if(1 == 1):
	pass

exec('print(x)', {"x": "abc"})
print(eval('x*2', {"x": 5}))
